package edu.nanyang.hibernate;

import java.util.Date;
import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import edu.nanyang.domain.Goods;

public class ManageGoodsImpl extends HibernateDaoSupport implements ManageGoods {

	@Override
	public List<Goods> selectgoods() {
		return this.getHibernateTemplate().find(
		"from edu.nanyang.domain.Goods");
		
	}

	@Override
	public void deletegoods(int goodsid) {
		Goods goods=(Goods) this.getHibernateTemplate().get(Goods.class, goodsid);
		if(goods!=null){
			this.getHibernateTemplate().delete(goods);
		}
		
	}

	public Goods selectgoods(int goodsid) {
		Goods goods=(Goods) this.getHibernateTemplate().get(Goods.class, goodsid);
		return goods;
		
		
	}

	@Override
	public void modifygoods(int goodsid) {
		Goods goods=(Goods) this.getHibernateTemplate().get(Goods.class, goodsid);
		if(goods!=null){
			this.getHibernateTemplate().update(goods);
		}
	}
	public void updateGoods(Goods goods){
		Goods g=(Goods)this.getHibernateTemplate().get(Goods.class, goods.getId());
		/**
		 * 从action传递过来的参数都在goods对象里
		 * 
		 * 虽然goods也有id 但是不直接getHibernateTemplate().update(goods)
		 * 好处是：修改列可以指定和控制，修改不会波及其他不应该修改的列
		 * 
		 */
		g.setTitle(goods.getTitle());
		g.setDescription(goods.getDescription());
		g.setPrice(goods.getPrice());
		g.setUpdateTime(new Date());
		this.getHibernateTemplate().update(g);//这个动作可以不要（这行代码可以删除），因为在事务内对hibernate对象的修改，hibernate会自动实例化到数据库（我在spring的配置文件里给这个类的所有方法都配置了事务）
	}
}
